Abfragen in Maskendefinitionen

Das Script in select_stmt ist relativ lang, wir wollen es daher nur Auszugsweise kommentieren. Allgemein formuliert arbeiten wir so:

1.    Zunächst werden die Eingaben in den Auswahlfeldern ausgewertet und eine Ergebnismenge ermittelt, meist in Form einer temporären Tabelle.

2.    Diese Tabelle wird mit den Hilfstabellen in der Datenbank gejoined, und es wir eine Ergebnistabelle berechnet. Ggf. werden noch Summen oder Prozente berechnet, meist benötigen wir dazu weitere temporäre Tabellen.

3.    Der letzte select im Feld select_stmt enthält die Ergebnistabelle, die das Applet empfängt. Mit Hilfe der xil_proplist werden die Spaltenüberschriften- und Breiten gesetzt, und das Ergebnis wird angezeigt.

4.    Direkt danach wird die letzte temporäre Tabelle gedroppt, und die Datenbankverbindung wird an das SuperX-Servlet zurückgegeben.

 

Am Anfang eines SQL-Scriptes werden die Auswahlfelder ausgewertet, die der Anwender angeklickt hat, bevor er Suchen gedrückt hat. So wird z.B. das Feld  wie folgt interpretiert:

Die Prozedur "execute procedure?" steht am Anfang von fast jeder SuperX-Abfrage und ermittelt eine temporäre Tabelle tmp_ch110_institut, die die ausgewählten Lehreinheitsnummern enthält[2]. Konkret wird der Passus "<<Org. Einheit>>" durch den Schlüssel ersetzt, der in der Maske ausgewählt  wurde. Es handelt sich also bei SuperX-Abfragen um dynamisches SQL.

Die Lehreinheiten wiederum werden dann mit der Hilfstabelle sos_stat_lehr gejoined, die eine Statistik von allen Lehreinheiten und Semestern enthält[3]. Die Einschränkungen durch die Maskenfelder Köpfe oder Fälle, Seit Semester und Hörerstatus sieht in SQL wie folgt aus:

 

Für "Köpfe oder Fälle" etc. finden wir hier nur Platzhalter. Alle relevanten Sätze werden in die temporäre Tabelle tmp_sos_stat_lehr selektiert (Syntax von Informix, bei Postgres sieht das etwas anders aus).

 

Wenn das Script abläuft, werden die Platzhalter ersetzt. In der Java-Konsole sieht das so aus:

Statt "<<Köpfe oder Fälle>>" finden wir den SQL-Ausdruck
studiengang_nr=1 and
fach_nr=1
, der Hörerstatus ist auf "H" codiert, und die Beurlaubten (Status 4) werden ausgefiltert. Das Semester muss >= 19982 sein, die Exmatrikulierten (Status 5) werden ebenfalls ausgefiltert, und die relevanten Lehrheinheiten werden ausgewählt.

 

 

Der letzte Select enthält die Ergebnistabelle: "select eintrag?".
Das Feld eintrag enthält den Volltext des Semesters, gesamt die Gesamtsumme, ges_1fs die Gesamtsumme der Studierenden im 1.FS etc.
In der XIL-Proplist sehen Sie schon die Überschriften in der Ergebnistabelle.

 

Ein kurzer Hinweis zur xil_proplist: Spaltenüberschriften sind von 0 aufsteigend durchnummeriert, und die Überschriften selbst können durch "\n" mit Zeilenumbrüchen versehen werden. Pro Überschrift wird ein Absatz formuliert, u.a. auch die Breite der Spalte. Alle anderen Angaben werden zur Zeit noch nicht auswertet[4]. Wichtig ist dass eine Spalte pro Absatz definiert ist.


Zur Superx-Homepage SuperX ist auch ein CampusSource-Projekt. Zur CampusSource-Homepage | Powered by FreeMarker Seite 13 / 102
Letzter Update: 17.06.2008
Impressum